Project Analyzer Detailed Version History 3.1.01 February 1997 *** New features *** 1. Lots of new metrics for complexity, understandability and reusability (see below) 2. Name shadowing report (Report|Name shadowing) 3. HTML reports for creating Intranet documentation New tool, Super Project Analyzer, released (see below) *** New metrics *** - Comment to code, whitespace to code ratios - Informational fan-in x fan-out - Informational complexity - Nested conditionals See these metrics in 1. View|File metrics, View|Procedure metrics 2. Report|Design quality report *** Enhancements to existing features *** 1. Summary Report shows number of property procedures (Get/Let/Set) and lines of code/comment/whitespace. 2. File menu shows 4 last opened projects 3. Problem report shows forms with ControlBox but without icon (good to have in Windows 95) 4. File details and Procedure details windows show more details 5. Options|Show hypertext on double click *** Modified features *** 1. "Procedures with cyclomatic complexity >= 10" moved from Problem Report to View|Procedure metrics 2. A part of Summary Report is now in Design quality report 3. RTF reports in the unregistered version too *** Bug fixes *** 1. Corrected another bug that caused *local* variables with type chars $#%!@& to show up on the Problem Report - Variables with no Type 2. No more crashes when the (enhanced) Display window is resized to a small height 3. Add-in events like ConnectAddIn are no longer "dead" 4. FRX view reports (Metafile) correctly 5. FRX view doesn't open before the corresponding .frm file has been analyzed 6. Optional arguments and ParamArrays are no longer reported as "variables with no type" because they must always be Variants *** New tool - Super Project Analyzer *** Super Project Analyzer is a new tool for analyzing a "Super Project" that consists of a number of VB projects that share some of their files. Supert Projec Analyzer provides reports on which modules, procedures and variables/constants are used by which projects, and which are left dead. It also reports cross-project reuse ratios. Super Project Analyzer requires Project Analyzer to work. See the Tools menu. It is shareware, registration is $20. 3.0.07 December 1996 Enhancements 1. "Optional" and "ParamArray" now precede those parameters on reports 2. Summary Report enhanced: - Ordered differently - Maintainability: Average identifier length reported - VB 4.0: Project name table size removed (wasn't accurate) - VB 3.0: Global Symbol Table and Global Name Table sizes reported more accurately, althought they are still just rought approximations Bug fixes 1. Corrected a bug that still caused variables with type chars $#%!@& to show up on the Problem Report - Variables with no Type 2. Corrected a bug that caused arrays to be ignored 3. Added option /PFONT to help in situations where printer font changes after page break 4. Fixed average source file age on Summary Report 5. Understands variable assignments (a=b) after If...Then and If..Then...Else 3.0.06 November 1996 New feature 1. Summary Report shows largest-smallest file, newest-oldest file and average source file age Enhancements 1. Knows DefType statements and sets variable types accordingly 2. Knows variable type chars $#%!@& (no, I'm not swearing :-) 3. Problem Report - Variables with no type: only lists those variables that are not affected by an As Type or a DefType statement 4. Hypertext screen can now display an unlimited number of references and assignments to a variable or constant Bug fixes 1. Shouldn't change font after heading on printed reports 2. Error handler in Needless globals report 3.0.05 Enhancement 1. You can now set the limit in View Cyclomatic Complexities and View Nested Loops dialog box Bug fix 1. Sub Main should not be "dead" 3.0.04 New feature 1. Report|File call tree Bug fix 1. Right-click in the hypertext window will show all references, not just one it used to in some cases 3.0.03 New features 1. Problem report shows variables without a type (implicit variants) Enhancements 1. Project Analyzer remembers the last used project directory Bug fixes 1. Sub Main is not "dead" 2. Sub Main is not "unneeded global" 3. "Dim Prem As String" is not considered as "Dim P : Rem As String" any more :-) 4. Won't crash when minimizing the main window with a report open 5. Corrected a bug that caused errors when seeing multiple reports on the screen 3.0.02 Minor changes 3.0.01 Official release New feature 1. Edit|Copy in the Hypertext window puts the procedure on the Clipboard Bug fixes 1. Another "Subscript out of range" at the end of analysis phase 1 2. Heading 3 works in RTF reports with MS Word 3. Maximum length of names (var, const, procedure) increased from 40 to 64 characters 2.9.12 Enhancements 1. Enhanced reports to printer 2. Printer setup dialog 3. RTF reports look better now. (Checked with MS Word and WordPad) The "RTF Editor is MS Word" option creates RTF optimized for MS Word, with Styles enabled => You can easily create a Table of Contents in Word with a couple of mouse clicks. Bug fixes 1. Saves Bold and Italic settings for printer font 2. Needless globals report works correctly 3. Dead procedures in Project Report reported correctly 4. Fixed a bug with "RTF Editor is MS Word" that caused Word to show error messages and start instead of editors associated with .txt and .wri 2.9.11 Bug fix 1. Fixed "An error occurred in showing procedures/Out of memory" at the end of phase 1/2 New feature 1. Ability to set printer font 2.9.10 Bug fixes 1. Fixed "This array is fixed or temporarily locked" 2. Counts While..Wend as a Nested Loop 3. Interprets procedure-level ReDim MyArray(MyFunc(123)) correctly 4. Understands As New Type 5. If MyTable is a module-level dynamic array, then ReDim Preserve MyTable(123) refers to that array 2.9.09 Bug fixes 1. Corrected a bug that caused references to MyClass.MyProcedure to be ignored if MyClass was a procedure-level variable 2. Now understands the difference between property Let/Set and Get better. MyClass.MyProp = MyClass.MyProp is interpreted correctly, but not with subscript: MyClass(1).MyProp = MyClass(1).MyProp 3. MyClass(1).MyProcedure is correctly found to be a call to MyProcedure in class module MyClass, even when subscripted. 4. References and assignment to class variables were pointing at wrong classes New debug feature: if an error occurs during analysis, may dump 4 files including debug info: errproc.lst, errgproc.lst, errpdecl.lst, errident.lst 2.9.08 New features 1. Print a call tree report in any expand/collapse state (from View|Call tree) 2. Understands the difference between variable assignment and reference 3. "Dead" variables and constants are those that are not referenced. So variables that are assigned to but never used show up as dead. 4. Hypertext window: Right click on a hyperlink brings up a popup menu with links to where the item is referenced or assigned to! 5. Vars & consts list: View references brings up a detailed reference & assignment list 6. Counts nested loops in a procedure (View|Nested loops) 7. VB 4.0: Shows project name and version at the bottom of a report Bug fixes 1. Shouldn't crash under Win NT 2. Understands the difference between Property Let and Get and Set, and sets hyperlinks correctly 3. Cyclomatic complexities now correct in Problem Report and Summary Report (increased by one) 4. Undestands ByRef, Optional and ParamArray parameters 2.9.07 Corrected many clever bugs that have cost many lives of "dead" procedures & variables. New feature: View cyclomatic complexities Now correctly interprets "Private/Global/Public Declare Function" "Private Type" is no more considered a variable named "Type" "Redim Preserve" is no more considered an array named "Preserve" Phase 2 is now faster Find procedure works in the main window Non-enhanced display output works in the 32-bit version Added 3 command line switches to help debugging the 32-bit version on Windows NT: /NOTMP32 Don't call GetTempFilename in KERNEL32.DLL /NOUSER32 Don't call USER32.DLL /NOSHELL32 Don't call SHELL32.DLL 2.9.06 Corrected stupid bugs that caused some variables & procedures to appear "dead": * Modules with only one procedure are now analyzed in Phase 2 too * Type characters $%!#@& are not part of a name: this means that myvar=2 is now correctly interpreted as a reference to myvar% 2.9.05 Corrected a stupid bug that caused all global variables to appear "dead" 2.9.04 Correctly parses indented declarations, like " Dim xyz" Corrected "Subscript out of range" at the end of phase 1/2 Remembers the position of each window Remembers the setting of "Dull gray windows" Added Collapse and Expand buttons to the call trees File details window shows if a variable/constant is dead or not New statistics at the bottom of the main window Notifies if a table has exceeded 32767 entries (16-bit version) May only happen with extremely large projects, never seen this. If you experience this, please let me know. In the 32-bit version this is not a problem Archiving in the 32-bit version handles filenames with characters >= Chr(128) correctly Procedure list on the main window now sorted in VB 4.0 too 2.9.03 Doesn't require PROJECT.DLL on the disk Won't crash on ReDim 2.9.02 Now 2 separate versions 1. 32-bit version works with VB 3.0 and 4.0 (all versions) 2. 16-bit version works with VB 3.0 and 4.0 (16-bit) Report|Needless globals report Most registered features now work in the shareware version provided you are analyzing a project with at most 10 basic files. Now correctly interprets words "Private" and "Public" Shows procedure attributes as comments FRX view detects Bitmaps, Icons, Metafiles and Cursors 2.9.01 Initial beta accepting VB 4.0 code Accepts Class Modules (.CLS files) [VB40] Hypertext shows local variables & constants, Hypertext shows class module references [VB40] Hypertext shows dead variables by overstriking Recent changes to v2.1: Formatted output on the screen & printer Hypertext jumps directly to variable/const declaration, even in the Vars/consts listbox